Traditional network protocol processing was software and CPU intensive, as multiple protocol layers needed to be processed in multiple CPU cycles for each packet that was sent or received over a network. Because of the variety of networks, networking protocols, routers, interface devices, computer operating systems and applications, it appeared necessary that such CPU intensive protocol processing was required. In addition to processing multiple protocol layers for each network packet, popular protocols such as TCP required further processing, including establishing and maintaining a TCP connection in order to ensure reliable communication, with the state of the TCP connection represented by a complicated block of information.
Such CPU intensive protocol processing became a bottleneck, because even as CPU speeds advanced dramatically, the faster CPUs could not keep up with increases in network speeds and traffic that caused increases in CPU protocol processing. Alacritech, Inc. solved this dilemma by splitting protocol processing tasks into repetitive data packet processing, which could be quickly and efficiently processed by specialized protocol processing hardware, and more complicated tasks that benefited from a CPU running a protocol stack. In addition, for protocols such as TCP, Alacritech, Inc. developed means for transferring control of connections such as TCP connections between a CPU running a protocol processing stack and protocol processing hardware for repetitive data packet processing.
Disclosure of these inventions can be found in various Alacritech patents and applications, including U.S. Patent Application No. 60/061,809, filed Oct. 14, 1997; U.S. Pat. No. 6,226,680, filed Apr. 27, 1998, issued May 1, 2001; U.S. Patent Application No. 60/098,296, filed Aug. 27, 1998; U.S. Pat. No. 6,389,479, filed Aug. 28, 1998, issued May 14, 2002; U.S. Pat. No. 6,434,620, filed Aug. 27, 1999, issued Aug. 13, 2002; U.S. Pat. No. 6,470,415, filed Oct. 13, 1999, issued Jan. 29, 2002; U.S. Pat. No. 6,247,060, filed Nov. 12, 1999, issued Jun. 12, 2001; U.S. Pat. No. 6,427,173, filed Dec. 15, 1999, issued Jul. 30, 2002; U.S. Pat. No. 6,427,171, filed Feb. 28, 2000, issued Jul. 30, 2002; U.S. patent application Ser. No. 09/675,484, filed Sep. 29, 2000; U.S. patent application Ser. No. 09/675,700, filed Sep. 29, 2000; U.S. patent application Ser. No. 09/692,561, filed Oct. 18, 2000; U.S. Pat. No. 6,334,153, filed Dec. 26, 2000, issued Dec. 25, 2001; U.S. Pat. No. 6,757,746, filed Feb. 20, 2001, issued Jun. 29, 2004; U.S. Pat. No. 6,687,758, filed Mar. 7, 2001, issued Feb. 3, 2004; U.S. patent application Ser. No. 09/802,551, filed Mar. 9, 2001; U.S. Pat. No. 6,658,480, filed Mar. 9, 2001, issued Dec. 2, 2003; U.S. Pat. No. 6,393,487, filed Mar. 12, 2001, issued May 21, 2002; U.S. patent application Ser. No. 09/855,979, filed May 14, 2001; U.S. patent application Ser. No. 09/970,124, filed Oct. 2, 2001; U.S. patent application Ser. No. 10/005,536, filed Nov. 7, 2001; U.S. patent application Ser. No. 10/023,240, filed Dec. 15, 2001; U.S. patent application Ser. No. 10/085,802, filed Feb. 26, 2002; U.S. patent application Ser. No. 10/093,042, filed Mar. 6, 2002; U.S. Pat. No. 6,591,302, filed Mar. 6, 2002, issued Jul. 8, 2003; U.S. patent application Ser. No. 10/098,694, filed Mar. 12, 2002; U.S. Patent Application No. 60/374,788, filed Apr. 22, 2002; U.S. Pat. No. 6,697,868, filed Jul. 29, 2002, issued Feb. 24, 2004; U.S. patent application Ser. No. 10/229,564, filed Aug. 27, 2002; U.S. patent application Ser. No. 10/246,820, filed Sep. 17, 2002; U.S. patent application Ser. No. 10/260,878, filed Sep. 27, 2002; U.S. patent application Ser. No. 10/260,959, filed Sep. 27, 2002; U.S. patent application Ser. No. 10/260,112, filed Sep. 27, 2002; U.S. patent application Ser. No. 10/261,051, filed Sep. 30, 2002; U.S. patent application Ser. No. 10/277,604, filed Oct. 18, 2002; U.S. patent application Ser. No. 10/289,977, filed Nov. 6, 2002; U.S. patent application Ser. No. 10/367,147, filed Feb. 12, 2003; U.S. patent application Ser. No. 10/369,902, filed Feb. 19, 2003; U.S. patent application Ser. No. 10/413,256, filed Apr. 14, 2003; U.S. patent application Ser. No. 10/420,364, filed Apr. 22, 2003; U.S. patent application Ser. No. 10/427,862, filed Apr. 30, 2003; U.S. patent application Ser. No. 10/438,719, filed May 14, 2003; U.S. patent application Ser. No. 10/601,237, filed Jun. 19, 2003; U.S. patent application Ser. No. 10/634,062, filed Aug. 4, 2003; U.S. patent application Ser. No. 10/639,810, filed Aug. 11, 2003; U.S. patent application Ser. No. 10/678,336, filed Oct. 3, 2003; U.S. patent application Ser. No. 10/706,398, filed Nov. 12, 2003; U.S. patent application Ser. No. 10/724,588, filed Nov. 28, 2003; U.S. patent application Ser. No. 10/729,111, filed Dec. 5, 2003; and U.S. patent application Ser. No. 10/881,271, filed Jun. 29, 2004. All of the above-referenced patents and applications are hereby incorporated by reference herein.